#ifndef __VARIABLE_H
#define __VARIABLE_H

#include "stdint.h"
#include "stdbool.h"
#include "bsp_key.h"
#include "bsp_bc26.h"


// 更新过程枚举
typedef enum{
	UPDATE_ENPTY=1,  // 1没有APP固件
	UPDATE_START,		 // 2开始更新标志，跳转到bootload模式
	UPDATE_LOADING,  // 3正在更新中
	UPDATE_FINISH    // 4更新完成，估计按信息写正常
} UPDATE_STAT;



typedef enum {
	IDEL = 0,   // 
	OFF,				
	ON,
	TOGGLE,
	BREATH
}LED_STAT;
extern LED_STAT sysStatLed;	



//bc26 相关参数----------------------------------------------------------

#define BC26_delay_ms(ms)		vTaskDelay(ms / portTICK_RATE_MS)//Delay_Us(ms*1000)
#define BC26_delay_us(us)		Delay_Us(us)


#define BC26_Puts(str)    USART3_SendStr_dma(str)
#define BC26_USART_Init		USART3_Init



// 数据接收缓存区大小
#define BC26_DATA_LEN 700

										//初始化   空闲      开始发数据    等待回应			超时
enum BC26_TRANS_STATE{INITB=0,   IDELB,     STARTB,       BUSYB,     TIMEOUTB};

										// 连接中          离线            在线
enum CONNECT_STAT{START_CONNECT=0,     OUT_LINE,       ON_LINE};

typedef struct //BC26_STRUCTURE
{
	enum BC26_TRANS_STATE state;   				// 状态

	char serverIp[20];  								 // 服务器IP地址
	uint32_t serverPort;								 // 服务器端口
	
	uint8_t	imei[17];										 // cimi编号，一般是15~17位，统一上报17位，不够17位的前面补0
	enum CONNECT_STAT	connectFlag;			 // 是否在线
	uint16_t index;											 //  收到的字节数
	uint8_t ip[20];											 // BC26获取的本地IP
	uint8_t  buff[BC26_DATA_LEN];				 //
}BC26_STRUCTURE_T;
extern BC26_STRUCTURE_T bc26;




// 板载上所有外设
typedef struct{
		LED_STAT *sysStatLed;		// 系统状态灯 （0:灭  1:亮）
		BC26_STRUCTURE_T *bc26;
}BOARD_DEV;

// 用户数据-----------------------------------------------


void paramStructInit(void);


#endif
